using System;
using System.Collections.Generic;
using System.Xml;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("EntityDef")]
	public class EntityDef : EntityBase
	{
		public TagMap m_referencedTags => method_3<TagMap>("m_referencedTags");

		public List<PowerHistoryInfo> m_powerHistoryInfoList => method_3<Class271<PowerHistoryInfo>>("m_powerHistoryInfoList")?.method_25();

		public CardTextBuilder m_cardTextBuilderOverride => method_3<CardTextBuilder>("m_cardTextBuilderOverride");

		public EntityDef(IntPtr address, string className)
			: base(address, className)
		{
		}

		public EntityDef(IntPtr address)
			: this(address, "EntityDef")
		{
		}

		public static EntityDef LoadFromString(string cardId, string xmlText, bool overrideCardId)
		{
			return MonoClass.smethod_15<EntityDef>(TritonHs.MainAssemblyPath, "", "EntityDef", "LoadFromString", new object[3] { cardId, xmlText, overrideCardId });
		}

		public new string ToString()
		{
			return method_13("ToString");
		}

		public EntityDef Clone()
		{
			return method_14<EntityDef>("Clone", Array.Empty<object>());
		}

		public TagMap GetReferencedTags()
		{
			return method_14<TagMap>("GetReferencedTags", Array.Empty<object>());
		}

		public new int GetReferencedTag(int tag)
		{
			return method_11<int>("GetReferencedTag", new object[1] { tag });
		}

		public void SetReferencedTag(GAME_TAG enumTag, int val)
		{
			method_9("SetReferencedTag", new Class276.Enum20[2]
			{
				Class276.Enum20.ValueType,
				Class276.Enum20.I4
			}, enumTag, val);
		}

		public void SetReferencedTag(int tag, int val)
		{
			method_9("SetReferencedTag", new Class276.Enum20[2]
			{
				Class276.Enum20.I4,
				Class276.Enum20.I4
			}, tag, val);
		}

		public TAG_RACE GetRace()
		{
			return method_11<TAG_RACE>("GetRace", Array.Empty<object>());
		}

		public TAG_ENCHANTMENT_VISUAL GetEnchantmentBirthVisual()
		{
			return method_11<TAG_ENCHANTMENT_VISUAL>("GetEnchantmentBirthVisual", Array.Empty<object>());
		}

		public TAG_ENCHANTMENT_VISUAL GetEnchantmentIdleVisual()
		{
			return method_11<TAG_ENCHANTMENT_VISUAL>("GetEnchantmentIdleVisual", Array.Empty<object>());
		}

		public TAG_RARITY GetRarity()
		{
			return method_11<TAG_RARITY>("GetRarity", Array.Empty<object>());
		}

		public bool HasValidDisplayName()
		{
			return method_11<bool>("HasValidDisplayName", Array.Empty<object>());
		}

		public string GetName()
		{
			return method_13("GetName");
		}

		public string GetShortName()
		{
			return method_13("GetShortName");
		}

		public string GetDebugName()
		{
			return method_13("GetDebugName");
		}

		public string GetArtistName()
		{
			return method_13("GetArtistName");
		}

		public string GetFlavorText()
		{
			return method_13("GetFlavorText");
		}

		public string GetHowToEarnText(TAG_PREMIUM premium)
		{
			return method_13("GetHowToEarnText", premium);
		}

		public string GetCardTextInHand()
		{
			return method_13("GetCardTextInHand");
		}

		public string GetRaceText()
		{
			return method_13("GetRaceText");
		}

		public PowerHistoryInfo GetPowerHistoryInfo(int effectIndex)
		{
			return method_14<PowerHistoryInfo>("GetPowerHistoryInfo", new object[1] { effectIndex });
		}

		public CardTextBuilder GetCardTextBuilderOverride()
		{
			return method_14<CardTextBuilder>("GetCardTextBuilderOverride", Array.Empty<object>());
		}

		public bool LoadDataFromCardXml(XmlReader reader)
		{
			return method_11<bool>("LoadDataFromCardXml", new object[1] { reader });
		}

		public void LoadTagFromDBF()
		{
			method_8("LoadTagFromDBF");
		}

		public void ReadTriggeredPowerHistoryInfo(XmlReader reader)
		{
			method_8("ReadTriggeredPowerHistoryInfo", reader);
		}
	}
}
